﻿#include <iostream>
#include <iomanip>
#include <fstream>
#include <sstream>

int main()
{
	std::cout << "这是输出库，世界如此美好，你怎能不努力 \n";

	//接收输入
	std::string name;
	std::cin >> name;
	std::cout << "name=" << name << "\n";


	//标准错误输出
	std::cerr << "这是标准错误输出" << "\n";


	//标准日志输出
	std::clog << "标准日志输出" << "\n";

	//输出输出精度，对齐方式
	double pi = 9.454534;
	std::cout << std::setprecision(3) << pi << "\n";

	// 设置输出宽度和对齐方式
	std::cout << std::setw(10) << std::left << pi << std::endl;
	std::cout << std::setw(10) << std::right << pi << std::endl;


	//检查流状态,检查输入操作是否成功
	if (std::cin.fail()) std::cerr << "Invalid input!" << std::endl;
	else std::cout << "You entered: " << name << std::endl;

	//文件输入输出库
	std::fstream file;
	//file.open("example.txt", std::ios::out); // 以输出模式打开文件
	//file.open("example.txt", std::ios::in); // 以输入模式打开文件
	file.open("example.txt", std::ios::app); // 以追加模式打开文件

	if (!file) {
		std::cerr << "Unable to open file!" << std::endl;
		return 1; // 文件打开失败
	}

	file << name << std::endl; // 写入文本
	file.close(); // 关闭文件


	//从字符串中读取数据
	std::string data = "10 20.5";
	std::istringstream iss(data);

	int i;
	double d;
	iss >> i >> d;

	std::cout << "Integer: " << i << std::endl;
	std::cout << "Double: " << d << std::endl;


	//向字符串中写入数据
	std::ostringstream oss;
	oss << i << " " << d;

	std::string result = oss.str();
	std::cout << "Resulting string: " << result << std::endl;




	//使用stringstream进行读写操作
	std::stringstream ss(data);
	// 从stringstream读取数据
	ss >> i >> d;

	std::cout << "Read Integer: " << i << ", Double: " << d << std::endl;

	// 向stringstream写入数据
	ss.str(""); // 清空stringstream
	ss << "New data: " << 50 << " " << 60.7;

	std::string newData = ss.str();
	std::cout << "New data string: " << newData << std::endl;


}
